/**
 * !!!!!!!!!!!!!!!!!!!!
 * 云的这里，不应该放Grid，应该放一个云层的文件路径，其他的都不需要hhh
 */
/**
 * TODO::修改！！！
 */

#ifndef CLOUD_H
#define CLOUD_H

#include <algorithm/shared/utils/Para.h>
#include <utils/ParaUtils.h>

#include <vector>

#include <boost/describe.hpp>

namespace solar
{
    class Grid;

    class Cloud : public Para
    {
        public:
            virtual ~Cloud() = default;
            Cloud() = default;

#include <utils/class_name.inc>

        private:
            void readFile();

        private:
            std::string cloud_file_;
            // std::shared_ptr<Grid> grid_;
            // 衰减因子k的数组，从文件中读取获得当光线经过云层时，DNI变为k*DNI
            std::vector<std::vector<double>>
                k_; // ！！！这个参数或许不应该放到UI层中，应该直接交付给算法层
            BOOST_DESCRIBE_CLASS(Cloud, (Para), (), (), (cloud_file_, k_))
    };

} // namespace solar
#define CURRENT_CLASS_NAME Cloud
#include <utils/class_describe_header.inc>
SOLAR_DESCRIBE_CLASS(Cloud, (Para), (), (), (cloud_file_, k_))
#endif
